await 关键字只能在 async def 函数内部使用。它的作用是告诉事件循环:“我现在要调用另一个异步操作,它可能需要一些时间,请你先暂停我,去做点别的事,等它完成了再叫醒我。”
await 右边通常是一个协程对象或其它可等待对象 (Awaitable)。
Python
async def main():
# 当执行到 await 时,main() 协程会暂停
# 控制权交还给事件循环,事件循环去驱动 other_async_func()
# 等 other_async_func() 执行完毕返回值后,main() 才从这里恢复执行
result = await other_async_func()
print(result)
await 是协程协作的信号,它将控制权从一个协程“传递”给另一个协程(通过事件循环的中转)。没有 await,协程就只是一个不会被执行的普通对象。
相关链接:
await必须在async def定义的函数或方法中使用 →async def- 定义异步函数和方法- 事件循环是
await背后真正的协调者 →asyncio事件循环是协程的调度器